fn main() {
    println!("一个月有{}天.", 31);
    println!("{0}有31天，{1}月有28天.{0}月比{1}多{2}天。", 7, 2, 31 - 28);
    println!(
        "{subject} {verb} {object}",
        object = "the lazy dog",
        subject = "the quick brown fox",
        verb = "jumps over"
    );
    println!("{} of {:b} people know binary, the other half don't", 1, 2);
    // 你可以按指定宽度来右对齐文本。
    // 下面语句输出 "     1"，5 个空格后面连着 1。
    println!("{number:>width$}", number = 1, width = 6);
    // 你可以在数字左边补 0。下面语句输出 "000001"。
    println!("{number:>0width$}", number = 1, width = 6);

    // println! 会检查使用到的参数数量是否正确。
    println!("My name is {0}, {1} {0}", "Bond", "James");
    // 改正 ^ 补上漏掉的参数："James"

    #[allow(dead_code)]
    #[derive(Debug)]
    struct Structure(i32);

    // 但是像结构体这样的自定义类型需要更复杂的方式来处理。
    // 下面语句无法运行。
    println!("This struct `{:#?}` won't print...", Structure(3));
    // 改正 ^ 注释掉此行。

    let pi = 3.141592;
    println!("Pi is roughly {:.2}", pi)
}
